package cn.org.xiaosheng.hutool.utils;

import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpUtil;
import cn.hutool.http.Method;

import java.util.HashMap;
import java.util.Map;

/**
 * @author XiaoSheng
 * @date 2023-11-17
 * @dec Get请求方法的封装工具类
 */
public class GetUtils {

    /**
     * 获取Get请求连接对象
     * 默认不打开重定向
     * @param url
     * @return
     */
    public static HttpRequest get(String url) {
        return HttpUtil.createGet(url);
    }

    /**
     * 创建Http请求对象
     * Method 是一个枚举对象 拥有如下方法:
     * 	GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE, CONNECT, PATCH
     * @return
     */
    public static HttpRequest get(Method method, String url) {
        return HttpUtil.createRequest(method, url);
    }

    /**
     * 不带请求头，不带表单参数的Get请求
     * 发送Get请求
     * @param url
     * @return
     */
    public static String getRequest(String url) {
        return HttpUtil.get(url);
    }

    /**
     *  不带请求头，带表单参数的Get请求
     * @param url
     * @param params
     * @return
     */
    public static String getRequest(String url, Map<String, Object> params) {
        return HttpUtil.get(url, params);
    }

    /**
     * 不带有请求头，带有表单参数的Get请求
     * @param url
     * @param params
     * @return
     */
    public static String getRequestBody(String url, Map<String, Object> params) {
        return get(url).form(params).execute().body();
    }

    /**
     * 带有请求头，不带有表单参数的Get请求
     * @param url
     * @param headers
     * @return
     */
    public static String getRequestHeaders(String url, Map<String, String> headers) {
        return get(url).addHeaders(headers).execute().body();
    }

    /**
     * 带有请求头,表单参数的Get请求
     * @param url
     * @param headers
     * @param params
     * @return
     */
    public static String getRequest(String url, Map<String, String> headers, Map<String, Object> params) {
        return get(url).addHeaders(headers).form(params).execute().body();
    }


}
